굳이, 외부로부터 푸시를 이용하고 싶지 않을때, local push를 사용한다.
1 2
| $ ionic cordova plugin add de.appplant.cordova.plugin.local-notification $ npm install --save @ionic-native/local-notifications
|
1 2 3 4 5 6 7 8 9 10
| import { LocalNotifications } from '@ionic-native/local-notifications';
@NgModule({ declarations: [ ... LocalNotifications, ... ] }) export class AppModule { }
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
| import { Component } from '@angular/core'; import { NavController, AlertController, Platform } from 'ionic-angular';
import { LocalNotifications } from '@ionic-native/local-notifications';
@Component({ selector: 'page-home', templateUrl: 'home.html' }) export class HomePage {
constructor(public navCtrl: NavController, private plt: Platform, private local: LocalNotifications, private alertCtrl: AlertController) { this.plt.ready().then(rdy => { this.local.on('click', (notification, state) => { let alert = this.alertCtrl.create({ title: notification.title, subTitle: json.myData }); alert.present(); }); }); } ionViewDidLoad() { if (this.platform.is('cordova')) { this.platform.ready().then(() => { this.localNotifications.hasPermission().then(function (granted) { if (!granted) { this.localNotifications.registerPermission(); } }); }); } }
scheduleNotification() { this.local.schedule({ id: 1, title: 'Attention Users!', text: 'Emirhan notification', at: new Date(new Date().getTime() + 5 * 1000), data: { myData: 'My hidden message this is.' } }); alert(JSON.stringify(this.local.getAll())); } }
|
1 2 3 4 5 6 7 8 9 10 11
| <ion-header> <ion-navbar> <ion-title> Ionic Blank </ion-title> </ion-navbar> </ion-header>
<ion-content padding> <button ion-button full (click)="scheduleNotification()">Schedule!</button> </ion-content>
|
푸시가 오는 것이 확인된다. 블루스택으로 테스트 할경우, 푸시가 오지 않는 경우가 있으니 주의할 것.
Reference
https://ionicframework.com/docs/native/local-notifications/